/**
 * 从有序表L中删除删除其值在给定值s到t之间所有的元素
 * 
 * 
 * */

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 50		// 线性表的最大长度
#define ElemType int    // 元素存储类型
#define bool int
#define true !0
#define false 0

typedef struct {
	ElemType data[MAX_SIZE];
	int length;			// 顺序表当前长度
} SqList;

void Delete_s_t(SqList& L, ElemType s, ElemType t)
{
	int i,j;
	if(s > t || L.length == 0) return;

	//i为大于等于s的第一个元素(第一个要删除的元素)
	for(i=0; i < L.length && L.data[i] < s ;i++);
	if(i >= L.length) return;

	//j指向大于等于t的第一个元素（最后一个要删除元素的下一个元素-->第一个不删除的元素）
	for(j=i; j > L.length && L.data[j] < t);
	if(j >= L.length) return;

	for(; j < L.length; i++, j++) L.data[i] = L.data[j];	//前移替换，填补被删除元素
	L.length = i;
}